package Controller;

import java.util.ArrayList;
import java.util.List;

import Beans.RubroBean;
import DAO.HibernateRubroDAO;
import DTO.RubroDTO;
import Model.Rubro;

public class AdministradorRubro {
	private static AdministradorRubro instancia;
	
	public static AdministradorRubro getInstancia(){
		if(instancia==null)
			instancia=new AdministradorRubro();
		return instancia;
	}

	public List<RubroBean> fromModelTOBean(List<Rubro> rubros) {
		 List<RubroBean> rubrosb=new ArrayList<RubroBean>();
		for (Rubro rubro : rubros) {
			RubroBean rubrob=fromModelTOBean(rubro);
			rubrosb.add(rubrob);
		}
		return rubrosb;
	}
	
	public RubroBean fromModelTOBean(Rubro rubro) {
		RubroBean rubrob=null;
		if(rubro!=null){
			rubrob=new RubroBean();
			rubrob.setIdRubro(rubro.getId());
			rubrob.setNombre(rubro.getNombre());
			rubrob.setPlatos(AdministradorPlato.getInstancia().fromModelTOBean(rubro.getPlatos()));
		}
		return rubrob;
	}

	public List<Rubro> fromBeanTOModel(List<RubroBean> rubroBean) {
		List<Rubro> rubros=new ArrayList<Rubro>();
		for (RubroBean rubroB : rubroBean) {
			Rubro rubro=fromBeanTOModel(rubroB);
			rubros.add(rubro);
		}
		return rubros;
	}

	public Rubro fromBeanTOModel(RubroBean rubroB) {
		Rubro rubro=null;
		if(rubroB!=null){
			rubro=new Rubro();
			rubro.setId(rubroB.getIdRubro());
			rubro.setNombre(rubroB.getNombre());
			rubro.setPlatos(AdministradorPlato.getInstancia().fromBeanTOModel(rubroB.getPlatos()));
		}
		return rubro;
	}

	public List<Rubro> fromDTOTOModel(List<RubroDTO> rubrosDTO) {
		List<Rubro> rubros=new ArrayList<Rubro>();
		for (RubroDTO rubroDTO : rubrosDTO) {
			Rubro rubro=fromDTOTOModel(rubroDTO);
			rubros.add(rubro);			
		}
		return rubros;
	}

	public Rubro fromDTOTOModel(RubroDTO rubroDTO) {
		Rubro rubro=null;
		if(rubroDTO!=null){
			rubro=new Rubro();
			rubro.setId(rubroDTO.getId());
			rubro.setNombre(rubroDTO.getNombre());
			rubro.setPlatos(AdministradorPlato.getInstancia().fromDTOTOModel(rubroDTO.getPlatos()));
		}
		return rubro;
	}
	
	public List<RubroDTO> fromModelTODTO(List<Rubro> rubros) {
		List<RubroDTO> rubrosDTO=new ArrayList<RubroDTO>();
		for (Rubro rubro : rubros) {
			RubroDTO rubroDTO=fromModelTODTO(rubro);
			rubrosDTO.add(rubroDTO);			
		}
		return rubrosDTO;
	}

	public RubroDTO fromModelTODTO(Rubro rubro) {
		RubroDTO rubroDTO=null;
		if(rubro!=null){
			rubroDTO=new RubroDTO();
			rubroDTO.setId(rubro.getId());
			rubroDTO.setNombre(rubro.getNombre());
			rubroDTO.setPlatos(AdministradorPlato.getInstancia().fromModelTODTO(rubro.getPlatos()));
		}
		return rubroDTO;
	}

	public Rubro buscarRubro(Rubro rubro) {
		RubroBean ab=fromModelTOBean(rubro);
		ab=HibernateRubroDAO.getInstancia().buscarRubro(ab);
		return fromBeanTOModel(ab);
	}
}
